<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		<div id="result">

		</div>
	


<script>
	var a = 10;
	var b = .9;
	var c = "abc";
	var d = 'hello';
	var f = 'p';
	var g = true;
	var h = [11, 'string', true];

	var i = new Object();
	i.name = "tom";
	i.age = 20;

	//1函数声明方式	

	/*function showResult() {
		console.log(d);
		//函数体
		//无return时，返回undefined;
	}*/

	//调用方法,
	//注意:声明提升，调用时，浏览器自动先加载函数
	//showResult();

	//2 函数表达式
	/*var getInfo=function(){		
		console.log(JSON.stringify(h));
	}*/
	//调用方式 
	//注意:此方式函数,必须先定义后使用.
	//getInfo();

	//立即执行函数
	/*(function() {
		//函数体
		console.log(JSON.stringify(i));
	}());
	(function(aa) {
		//函数体
		console.log(aa);
	})(10)
	*
	* */

	//工厂模式
	/*function Person(){
		var o={};
		o.id="";
		o.name="";
		o.getInfo=function(){
			console.log("this is an object ! ");
		}
		return o;
	}
	
	var p1=Person();//实例化一个对象
	console.log(JSON.stringify(p1));
	p1.getInfo();*/

	//2构造函数模式
	/*function Person() {
		this.name = "tom";
		this.age = 20;
		this.getInfo = function() {
			console.log("构造函数");
		};
	}
	var p2 = new Person();
	console.log(p2.name);*/
	
	//3单例模式
	/*var p1=(function(){	
		//私有区
		var student={
			studId:"0001",
			studName:"tom",
		}		
		//导出对象
		//return student;
		
		//实例化的对象		
		return{
			stud:student,
			name:"mary",
			age:20,
			getInfo:function(){
				console.log("单例模式");				
			}
		}
	}());
	
	console.log(p1.stud.studId)*/
	
	
	
	
</script></body></html>